﻿using GraphProcessor;
using IQIGame.Onigao.Logic;

namespace IQIGame.Onigao.GamePlay.Editors
{
    [System.Serializable, NodeMenuItem(LevelEditorConst.Level + "/" + LevelEditorConst.Trigger + "/" + LevelEditorConst.Interact, typeof(LevelServiceGraph))]
    public class LevelServiceTriggerNode_Interact : LevelServiceTriggerNode
    {
        protected override ServiceTriggerType triggerType => ServiceTriggerType.Interact;

        protected override string triggerName => LevelEditorConst.Interact;
    }
    
    [System.Serializable, NodeMenuItem(LevelEditorConst.Level + "/" + LevelEditorConst.Trigger + "/" + LevelEditorConst.UnderAttack, typeof(LevelServiceGraph))]
    public class LevelServiceTriggerNode_UnderAttack : LevelServiceTriggerNode
    {
        protected override ServiceTriggerType triggerType => ServiceTriggerType.UnderAttack;

        protected override string triggerName => LevelEditorConst.UnderAttack;
    }
    
    [System.Serializable, NodeMenuItem(LevelEditorConst.Level + "/" + LevelEditorConst.Trigger + "/" + LevelEditorConst.EntityStopNavigation, typeof(LevelServiceGraph))]
    public class LevelServiceTriggerNode_EntityStopNavigation : LevelServiceTriggerNode
    {
        protected override ServiceTriggerType triggerType => ServiceTriggerType.EntityStopNavigation;

        protected override string triggerName => LevelEditorConst.EntityStopNavigation;
    }
    
    [System.Serializable, NodeMenuItem(LevelEditorConst.Level + "/" + LevelEditorConst.Trigger + "/" + LevelEditorConst.EntityBorn, typeof(LevelServiceGraph))]
    public class LevelServiceTriggerNode_EntityBorn : LevelServiceTriggerNode
    {
        protected override ServiceTriggerType triggerType => ServiceTriggerType.EntityBorn;

        protected override string triggerName => LevelEditorConst.EntityBorn;
    }
    
    [System.Serializable, NodeMenuItem(LevelEditorConst.Level + "/" + LevelEditorConst.Trigger + "/" + LevelEditorConst.TeleportArrive, typeof(LevelServiceGraph))]
    public class LevelServiceTriggerNode_TeleportArrive : LevelServiceTriggerNode
    {
        protected override ServiceTriggerType triggerType => ServiceTriggerType.TeleportArrive;

        protected override string triggerName => LevelEditorConst.TeleportArrive;
    }
    
    [System.Serializable, NodeMenuItem(LevelEditorConst.Level + "/" + LevelEditorConst.Trigger + "/" + LevelEditorConst.NoServiceTiggeredWhenInteract, typeof(LevelServiceGraph))]
    public class LevelServiceTriggerNode_NoServiceTiggeredWhenInteract : LevelServiceTriggerNode
    {
        protected override ServiceTriggerType triggerType => ServiceTriggerType.NoServiceTiggeredWhenInteract;

        protected override string triggerName => LevelEditorConst.NoServiceTiggeredWhenInteract;
    }
    
    [System.Serializable, NodeMenuItem(LevelEditorConst.Level + "/" + LevelEditorConst.Trigger + "/" + LevelEditorConst.EnterRegion, typeof(LevelServiceGraph))]
    public class LevelServiceTriggerNode_EnterRegion : LevelServiceTriggerNode
    {
        protected override ServiceTriggerType triggerType => ServiceTriggerType.EnterRegion;

        protected override string triggerName => LevelEditorConst.EnterRegion;
    }
}